package BinaryTree.后序;

import 其他.DataStructure.TreeNode;
import MyUtils.TreeUtils;

/**
 * int f 自底向上：
 *
 *      1 后序
 *          a = f()
 *          -> 先右下分 后左上算
 *
 *      2 汉译
 *          leftRes
 *          rightRes
 *          -> r +curRes
 *
 *      3 returnCurRes
 *        这个 函数名 好
 */
public class 二叉树节点总数_自底向上 {
    public static void main(String[] args) {
        TreeNode root = TreeUtils.strToTree("1,2,3,4,5");
        // backTrack(root);
        int curRootRes = returnCurRes(root);
        System.out.println("总数  -> " + curRootRes);
    }

    // 自底向上
    private static int returnCurRes(TreeNode root) {
        if(root == null){
            return 0;
        }

        int leftRes = returnCurRes(root.left);
        int rightRes = returnCurRes(root.right);
        return leftRes + rightRes + 1; // curRes
    }
}
